Node.js Response Reference

Node.js HTTP client

HTTP প্রতিক্রিয়া বস্তু

Node.js HTTP (http.ServerResponse) HTTP , . 'request' callback .

এই বস্তুটি ক্লায়েন্টে ডেটা ফেরত দিতে এবং WritableStream ইন্টারফেস প্রয়োগ করতে ব্যবহৃত হয়। রেসপন্স অবজেক্ট হল কিভাবে সার্ভার ক্লায়েন্টের কাছে ডাটা পাঠায় যেটি অনুরোধ করেছে।

উত্তর বস্তু ব্যবহার করে

const http = প্রয়োজন('http'); // একটি HTTP সার্ভার তৈরি করুন const সার্ভার = http.createServer((req, res) => { // 'res' হল ServerResponse অবজেক্ট res.statusCode = 200; res.setHeader('কন্টেন্ট-টাইপ', 'টেক্সট/প্লেইন'); res.end('হ্যালো ওয়ার্ল্ড\n'); }); server.listen(8080, () => { console.log('সার্ভার http://localhost:8080/' এ চলছে); });

উত্তর বৈশিষ্ট্য

বৈশিষ্ট্য ব্যাখ্যা
response.finished প্রতিক্রিয়া সম্পূর্ণ কিনা তা নির্দেশ করে একটি বুলিয়ান
response.headersSent একটি বুলিয়ান নির্দেশ করে যে হেডার ক্লায়েন্টকে পাঠানো হয়েছে কিনা
response.sendDate সত্য হলে, তারিখ শিরোনামটি স্বয়ংক্রিয়ভাবে তৈরি হয় এবং ইতিমধ্যে সেট না থাকলে প্রতিক্রিয়াতে পাঠানো হয়। ডিফল্ট: সত্য
response.statusCode স্ট্যাটাস কোড ক্লায়েন্টকে পাঠানো হয়েছে (যেমন, 200, 404, 500)
response.statusMessage ক্লায়েন্টকে পাঠানো একটি স্ট্যাটাস মেসেজ
response.socket মৌলিক সকেট একটি রেফারেন্স
response.writableEnded response.end() boolean
response.writableFinished একটি বুলিয়ান নির্দেশ করে যে সমস্ত ডেটা অন্তর্নিহিত সিস্টেমে ফ্লাশ করা হয়েছে কিনা

প্রতিক্রিয়া মোড

পদ্ধতি ব্যাখ্যা
response.addTrailers(headers) প্রতিক্রিয়াতে HTTP ট্রেলিং হেডার যোগ করে
response.cork() প্রতিক্রিয়াতে লেখা ডেটাকে বাফার করতে বাধ্য করে৷
response.end([data[, encoding]][, callback]) সার্ভারে সংকেত যে সমস্ত প্রতিক্রিয়া হেডার এবং বডি পাঠানো হয়েছে
response.flushHeaders() প্রতিক্রিয়া শিরোনাম ফ্লাশ করে
response.getHeader(name) আউটগোয়িং হেডারের মান পায় যা সারিবদ্ধ কিন্তু এখনও পাঠানো হয়নি
response.getHeaderNames() বহির্গামী বার্তার জন্য সারিতে থাকা বিষয়গুলির নাম সম্বলিত একটি অ্যারে প্রদান করে৷
response.getHeaders() বর্তমান আউটপুট শিরোনামগুলির একটি অগভীর অনুলিপি প্রদান করে
response.hasHeader(name) নাম দ্বারা চিহ্নিত শিরোনাম বর্তমানে সেট করা থাকলে সত্য প্রদান করে
response.removeHeader(name) পাঠানোর জন্য সারি থেকে হেডার সরিয়ে দেয়
response.setHeader(name, value) শিরোনাম বস্তুর জন্য একটি অনন্য শিরোনাম মান সেট করে
response.setTimeout(msecs[, callback]) সকেটের টাইমআউট মান সেট করে
response.uncork() কর্ক () দ্বারা বাফার করা ডেটা ফ্লাশ করে
response.write(chunk[, encoding][, callback]) প্রতিক্রিয়া শরীরের একটি অংশ পাঠায়
response.writeContinue() ক্লায়েন্টকে একটি HTTP/1.1 100 Continue বার্তা পাঠায়
response.writeHead(statusCode[, statusMessage][, headers]) অনুরোধে একটি প্রতিক্রিয়া শিরোনাম পাঠায়
response.writeProcessing() ক্লায়েন্টকে একটি HTTP/1.1 102 প্রসেসিং বার্তা পাঠায়

মৌলিক উত্তর উদাহরণ

বিভিন্ন প্রতিক্রিয়া মোড ব্যবহার করে একটি মৌলিক উদাহরণ:

const http = প্রয়োজন('http'); // একটি HTTP সার্ভার তৈরি করুন const সার্ভার = http.createServer((req, res) => { // স্ট্যাটাস কোড এবং বার্তা সেট করুন res.statusCode = 200; res.statusMessage = 'ঠিক আছে'; // হেডার সেট করুন res.setHeader('Content-Type', 'text/html'); res.setHeader('X-Powered-By', 'Node.js'); // প্রতিক্রিয়া তথ্য লগ করুন console.log(`প্রতিক্রিয়া অবস্থা: ${res.statusCode} ${res.statusMessage}`); console.log(`হেডার পাঠানো হয়েছে: ${res.headersSent}`); // writeHead ব্যবহার করে অতিরিক্ত হেডার পাঠান (আগে সেট করা ওভাররাইট করে) res.writeHead(200, { 'কন্টেন্ট-টাইপ': 'টেক্সট/এইচটিএমএল', 'এক্স-কাস্টম-হেডার': 'কাস্টম মান' }); // এখন শিরোনাম পাঠানো হয়েছে কিনা তা পরীক্ষা করুন console.log(`RightHead এর পরে হেডার পাঠানো হয়েছে: ${res.headersSent}`); // অংশে প্রতিক্রিয়া লিখুন res.write('








\n');
  res.write('\n');
  res.write('Node.js Response Example\n');
  res.write('\n');
  res.write('  

Hello from Node.js!

\n'); res.write('

This response was sent using the ServerResponse object.

\n'); res.write('\n'); res.write(''); // প্রতিক্রিয়া শেষ করুন res.end(); // সমাপ্তির স্থিতি লগ করুন console.log(`প্রতিক্রিয়া শেষ: ${res.finished}`); console.log(`Response writableEnded: ${res.writableEnded}`); console.log(`Response writableFinished: ${res.writableFinished}`); }); // সার্ভার শুরু করুন const PORT = 8080; server.listen(PORT, () => { console.log(`সার্ভার http://localhost:${PORT}/` এ চলছে); });

উত্তর শিরোনাম সেট আপ করা হচ্ছে

উত্তর শিরোনাম সেট করার বিভিন্ন উপায়:

const http = প্রয়োজন('http'); // HTTP সার্ভার তৈরি করুন const সার্ভার = http.createServer((req, res) => { // পদ্ধতি 1: সেটহেডার সহ পৃথক শিরোনাম সেট করুন res.setHeader('Content-Type', 'application/json'); res.setHeader('ক্যাশে-কন্ট্রোল', 'max-age=3600'); res.setHeader('X-কাস্টম-হেডার', 'পদ্ধতি 1'); // একটি হেডার মান পান const contentType = res.getHeader('Content-Type'); console.log(`Content-Type header: ${contentType}`); // একটি শিরোনাম বিদ্যমান কিনা পরীক্ষা করুন console.log(`Cache-Control হেডার আছে: ${res.hasHeader('Cache-Control')}`); // সব হেডারের নাম পান console.log('হেডারের নাম:', res.getHeaderNames()); // অবজেক্ট হিসাবে সমস্ত হেডার পান console.log('সমস্ত হেডার:', res.getHeaders()); // একটি হেডার সরান res.removeHeader('X-কাস্টম-হেডার'); console.log(`অপসারণের পর, X-কাস্টম-হেডার আছে: ${res.hasHeader('X-Custom-Header')}`); // পদ্ধতি 2: রাইটহেড সহ একাধিক শিরোনাম সেট করুন res.writeHead(200, { 'Content-Type': 'application/json', 'এক্স-কাস্টম-হেডার': 'পদ্ধতি 2', 'X-চালিত-দ্বারা': 'Node.js' }); // JSON প্রতিক্রিয়া পাঠান const responseObject = { বার্তা: 'হেডার প্রদর্শন', হেডার: Object.fromEntry( Object.entries(res.getHeaders()) ), headersSent: res.headersSent }; res.end(JSON.stringify(responseObject, null, 2)); }); // সার্ভার শুরু করুন const PORT = 8080; server.listen(PORT, () => { console.log(`সার্ভার http://localhost:${PORT}/` এ চলছে); });

HTTP স্থিতি কোড

বিভিন্ন HTTP স্থিতি কোড সেট করা হচ্ছে:

const http = প্রয়োজন('http'); const url = প্রয়োজন('url'); // একটি HTTP সার্ভার তৈরি করুন যা বিভিন্ন স্ট্যাটাস কোড প্রদর্শন করে const সার্ভার = http.createServer((req, res) => { // অনুরোধের URL পার্স করুন const parsedUrl = url.parse(req.url, true); const path = parsedUrl.pathname; // কন্টেন্ট-টাইপ হেডার সেট করুন res.setHeader('Content-Type', 'text/html'); // বিভিন্ন স্ট্যাটাস কোড সহ বিভিন্ন পাথ পরিচালনা করুন যদি (পথ === '/') { // 200 ঠিক আছে res.writeHead(200, 'OK'); res.end(`

HTTP Status Codes Demo

This page demonstrates different HTTP status codes.

`); } else if (path === '/redirect') { // 301 Moved Permanently res.writeHead(301, { 'Location': '/' }); res.end(); } else if (path === '/not-modified') { // 304 Not Modified res.writeHead(304); res.end(); } else if (path === '/bad-request') { // 400 Bad Request res.writeHead(400, 'Bad Request'); res.end(`

400 Bad Request

The server could not understand the request due to invalid syntax.

Go back to home

`); } else if (path === '/unauthorized') { // 401 Unauthorized res.writeHead(401, { 'WWW-Authenticate': 'Basic realm="Access to the site"' }); res.end(`

401 Unauthorized

Authentication is required but was not provided.

Go back to home

`); } else if (path === '/forbidden') { // 403 Forbidden res.writeHead(403, 'Forbidden'); res.end(`

403 Forbidden

The server understood the request but refuses to authorize it.

Go back to home

`); } else if (path === '/not-found') { // 404 Not Found res.writeHead(404, 'Not Found'); res.end(`

404 Not Found

The requested resource could not be found on this server.

Go back to home

`); } else if (path === '/server-error') { // 500 Internal Server Error res.writeHead(500, 'Internal Server Error'); res.end(`

500 Internal Server Error

The server has encountered a situation it doesn't know how to handle.

Go back to home

`); } অন্য { // ডিফল্ট: 404 পাওয়া যায়নি res.writeHead(404, 'নট ফাউন্ড'); res.end(`

404 Not Found

The requested resource could not be found on this server.

Go back to home

`); } }); // সার্ভার শুরু করুন const PORT = 8080; server.listen(PORT, () => { console.log(`সার্ভার http://localhost:${PORT}/` এ চলছে); });

স্ট্রিমিং উত্তর

ডেটা স্ট্রিম করতে রেসপন্স অবজেক্ট ব্যবহার করে:

const http = প্রয়োজন('http'); const fs = প্রয়োজন('fs'); const path = require('path'); // একটি HTTP সার্ভার তৈরি করুন const সার্ভার = http.createServer((req, res) => { const parsedUrl = নতুন URL(req.url, 'http://localhost'); const pathname = parsedUrl.pathname; // বিভিন্ন পাথ হ্যান্ডেল যদি (পথের নাম === '/') { // একটি নিয়মিত প্রতিক্রিয়া পাঠান res.writeHead(200, {'Content-Type': 'text/html'}); res.end(`

Streaming Examples

`); } অন্যথায় যদি (পথের নাম === '/স্ট্রিম-টেক্সট') { // একটি বড় পাঠ্য প্রতিক্রিয়া স্ট্রীম করুন res.writeHead(200, {'Content-Type': 'text/plain'}); যাক গণনা = 1; const max = 10; // বিলম্বের সাথে খণ্ডে প্রতিক্রিয়া লিখুন const interval = setInterval(() => { res.write(${count} ডাটার অংশ\n`.রিপিট(20)); যদি (গণনা >= সর্বাধিক) { clearInterval(ব্যবধান); res.end('\nস্ট্রিমিং সম্পূর্ণ!'); } গণনা++; }, 500); // ক্লায়েন্ট সংযোগ বিচ্ছিন্ন হ্যান্ডেল req.on('close', () => { clearInterval(ব্যবধান); console.log('ক্লায়েন্ট বন্ধ সংযোগ'); }); } অন্যথায় যদি (পথের নাম === '/স্ট্রিম-ফাইল') { // একটি নমুনা ফাইল তৈরি করুন const filePath = path.join(__dirname, 'sample-large-file.txt'); যদি (!fs.existsSync(filePath)) { const writeStream = fs.createWriteStream(filePath); জন্য (আলো i = 0; i <10000; i++) { writeStream.write(`লাইন ${i}: এটি স্ট্রিমিং প্রদর্শনের জন্য পাঠ্যের একটি নমুনা লাইন।\n`); } writeStream.end(); } // ফাইলের পরিসংখ্যান পান const stat = fs.statSync(filePath); // হেডার সেট করুন res.writeHead(200, { 'কন্টেন্ট-টাইপ': 'টেক্সট/প্লেইন', 'সামগ্রী-দৈর্ঘ্য': stat.size }); // একটি রিড স্ট্রিম তৈরি করুন এবং প্রতিক্রিয়া পাইপ করুন const fileStream = fs.createReadStream(filePath); fileStream.pipe(res); // ফাইল স্ট্রিম ত্রুটিগুলি পরিচালনা করুন fileStream.on('error', (err) => { console.error(`ত্রুটি স্ট্রিমিং ফাইল: ${err.message}`); res.end('ত্রুটি স্ট্রিমিং ফাইল'); }); // প্রতিক্রিয়া পাঠানোর পরে পরিষ্কার করুন res.on('finish', () => { fs.unlink(filePath, (err) => { if (err) console.error(`নমুনা ফাইল মুছে ফেলার ত্রুটি: ${err.message}`); }); }); } অন্যথায় যদি (পথের নাম === '/stream-json') { // একটি বড় JSON প্রতিক্রিয়া স্ট্রিম করুন res.writeHead(200, {'Content-Type': 'application/json'}); // JSON অ্যারে শুরু করুন res.write('[\n'); যাক গণনা = 0; const max = 100; let isFirst = true; // বিলম্বের সাথে JSON অবজেক্ট লিখুন const interval = setInterval(() => { // প্রথম আইটেম ব্যতীত সবার সাথে একটি কমা যোগ করুন যদি (!প্রথম হয়) { res.write(',\n'); } অন্য { isFirst = মিথ্যা; } // একটি JSON অবজেক্ট তৈরি করুন const obj = { আইডি: গণনা, নাম: `আইটেম ${count}`, টাইমস্ট্যাম্প: নতুন তারিখ().toISOSstring(), ডেটা: `${count}` আইটেমের জন্য নমুনা ডেটা }; // বস্তুটিকে JSON হিসাবে লিখুন res.write(JSON.stringify(obj, null, 2)); যদি (গণনা >= সর্বাধিক) { clearInterval(ব্যবধান); // JSON অ্যারে সম্পূর্ণ করুন res.write('\n]'); res.end(); } গণনা++; }, 100); // ক্লায়েন্ট সংযোগ বিচ্ছিন্ন হ্যান্ডেল req.on('close', () => { clearInterval(ব্যবধান); console.log('JSON স্ট্রিমিংয়ের সময় ক্লায়েন্ট বন্ধ সংযোগ'); }); } অন্য { // অজানা পথ হ্যান্ডেল res.writeHead(404, {'Content-Type': 'text/plain'}); res.end('নট ফাউন্ড'); } }); // সার্ভার শুরু করুন const PORT = 8080; server.listen(PORT, () => { console.log(`স্ট্রিমিং সার্ভার http://localhost:${PORT}/` এ চলছে); });

সারাংশ

জিজিপ বা ডিফ্লেট দিয়ে প্রতিক্রিয়া সংকুচিত করা:

const http = প্রয়োজন('http'); const zlib = require('zlib'); // কম্প্রেশন সহ একটি HTTP সার্ভার তৈরি করুন const সার্ভার = http.createServer((req, res) => { // অ্যাকসেপ্ট-এনকোডিং হেডার পান const acceptEncoding = req.headers['accept-encoding'] || ''; // একটি নমুনা প্রতিক্রিয়া তৈরি করুন (বড় স্ট্রিং) const sampleData = 'এটি একটি নমুনা পাঠ্য যা সংকুচিত হবে। '.পুনরাবৃত্তি(1000); // একটি ফাংশন যা উপযুক্ত শিরোনাম সহ একটি প্রতিক্রিয়া পাঠায় ফাংশন sendResponse (ডেটা, এনকোডিং) { // কম্প্রেশন ব্যবহার করা হলে কন্টেন্ট-এনকোডিং হেডার সেট করুন যদি (এনকোডিং) { res.setHeader('কন্টেন্ট-এনকোডিং', এনকোডিং); } res.setHeader('কন্টেন্ট-টাইপ', 'টেক্সট/প্লেইন'); res.setHeader('Vary', 'Accept-Encoding'); res.writeHead(200); res.end(ডেটা); } // ক্লায়েন্ট কোন এনকোডিং সমর্থন করে তা পরীক্ষা করুন যদি (/\bgzip\b/.test(Encoding স্বীকার)) { // ক্লায়েন্ট gzip সমর্থন করে console.log('gzip কম্প্রেশন ব্যবহার করে'); zlib.gzip(নমুনা ডেটা, (ত্রুটি, সংকুচিত) => { যদি (ভুল) { console.error('Gzip কম্প্রেশন ব্যর্থ হয়েছে:', err); সেন্ড রেসপন্স (নমুনা ডেটা); // অসংকুচিত ফিরে পড়া } অন্য { sendResponse (সংকুচিত, 'gzip'); console.log(`মূল আকার: ${sampleData.length}, সংকুচিত আকার: ${compressed.length}`); console.log(`কম্প্রেশন অনুপাত: ${(compressed.length / sampleData.length * 100).toFixed(2)}%`); } }); } অন্যথায় যদি (/\bdeflate\b/.test(Encoding স্বীকার)) { // ক্লায়েন্ট ডিফ্লেট সমর্থন করে console.log('ডিফ্লেট কম্প্রেশন ব্যবহার করে'); zlib.deflate(sampleData, (err, কম্প্রেসড) => { যদি (ভুল) { console.error('ডিফ্লেট কম্প্রেশন ব্যর্থ হয়েছে:', ত্রুটি); সেন্ড রেসপন্স (নমুনা ডেটা); // অসংকুচিত ফিরে পড়া } অন্য { sendResponse (সংকুচিত, 'deflate'); console.log(`মূল আকার: ${sampleData.length}, সংকুচিত আকার: ${compressed.length}`); console.log(`কম্প্রেশন অনুপাত: ${(compressed.length / sampleData.length * 100).toFixed(2)}%`); } }); } অন্যথায় যদি (/\bbr\b/.test(Encoding স্বীকার)) { // ক্লায়েন্ট Brotli সমর্থন করে (যদি Node.js সংস্করণ দ্বারা সমর্থিত হয়) যদি (typeof zlib.brotliCompress === 'ফাংশন') { console.log('ব্রটলি কম্প্রেশন ব্যবহার করে'); zlib.brotliCompress(sampleData, (err, compressed) => { যদি (ভুল) { console.error('Brotli কম্প্রেশন ব্যর্থ হয়েছে:', err); সেন্ড রেসপন্স (নমুনা ডেটা); // অসংকুচিত ফিরে পড়া } অন্য { sendResponse(সংকুচিত, 'br'); console.log(`মূল আকার: ${sampleData.length}, সংকুচিত আকার: ${compressed.length}`); console.log(`কম্প্রেশন অনুপাত: ${(compressed.length / sampleData.length * 100).toFixed(2)}%`); } }); } অন্য { console.log('Brotli এই Node.js সংস্করণে সমর্থিত নয়'); সেন্ড রেসপন্স (নমুনা ডেটা); // অসংকুচিত ফিরে পড়া } } অন্য { // বিমূর্ততা ক্লায়েন্ট দ্বারা সমর্থিত নয় console.log('কোন কমপ্রেশন ব্যবহার করা হয়নি'); সেন্ড রেসপন্স (নমুনা ডেটা); } }); // সার্ভার শুরু করুন const PORT = 8080; server.listen(PORT, () => { console.log(`কম্প্রেশন সার্ভার http://localhost:${PORT}/` এ চলছে); });

সর্বোত্তম অনুশীলন

সর্বদা কন্টেন্ট-টাইপ এতে সেট করুন:আপনার প্রতিক্রিয়াগুলির জন্য সর্বদা একটি উপযুক্ত বিষয়বস্তু-প্রকার শিরোনাম সেট করুন
সঠিক স্থিতি চিহ্ন ব্যবহার করুন:অনুরোধের শেষ নির্দেশ করতে উপযুক্ত HTTP স্ট্যাটাস কোড ব্যবহার করুন
সঠিক শিরোনাম সেট করুন:ক্যাশে-কন্ট্রোল, বিষয়বস্তু-দৈর্ঘ্য ইত্যাদির মতো উপযুক্ত শিরোনাম সেট করুন
ত্রুটিগুলি সঠিকভাবে পরিচালনা করুন:অর্থপূর্ণ ত্রুটি বার্তা সহ উপযুক্ত স্থিতি কোড (4xx, 5xx) ফেরত দিন
স্ট্রীম বড় উত্তর:বড় প্রতিক্রিয়ার জন্য, মেমরিতে সবকিছু লোড করার পরিবর্তে স্ট্রিমিং ব্যবহার করুন
সারসংক্ষেপ কার্যকর করুন:ব্যান্ডউইথ ব্যবহার কমাতে পাঠ্য-ভিত্তিক প্রতিক্রিয়াগুলির জন্য কম্প্রেশন ব্যবহার করুন
নিরাপত্তা বিষয়:বিষয়বস্তু-নিরাপত্তা-নীতি, এক্স-কন্টেন্ট-টাইপ-বিকল্প ইত্যাদির মতো নিরাপত্তা শিরোনাম যোগ করুন
সর্বদা এর সাথে উত্তরটি শেষ করুন:প্রতিক্রিয়া চূড়ান্ত করতে সর্বদা response.end() কল করুন

অনুশীলন করুন

Node.js HTTP client .

http.ClientResponse
✗ ভুল! "http.ClientResponse" Node.js-এ একটি বৈধ প্রকার নয়
http.ServerResponse
✓ ঠিক আছে! HTTP সার্ভারে ক্লায়েন্টকে ডেটা ফেরত পাঠাতে Node.js-এ ব্যবহৃত বৈধ প্রতিক্রিয়ার ধরন হল "http.ServerResponse"।
http.OutgoingResponse
✗ ভুল! "http.OutgoingResponse" Node.js-এ একটি বৈধ প্রকার নয়
http.ResponseObject
✗ ভুল! "http.ResponseObject" Node.js-এ একটি বৈধ প্রকার নয়